test driven development problems